package com.feemanage.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.common.validate.edit;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.framework.config.BigDecimalSerializer;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 经费支出主表
 */
@Data
@TableName("biz_project_payout")
public class BizProjectPayout extends  myBaseEntity{

    private static final long serialVersionUID = 1L;

    /** 自增ID */
    @ApiModelProperty("主表id")
    @TableId(value = "id",type = IdType.ASSIGN_UUID)
    @NotNull(message = "id不能为空", groups = {edit.class})
    private String id;

    /**
     * 项目id
     */
    @ApiModelProperty("项目id")
    private String projectId;

    /**
     *报销单号
     */
    @ApiModelProperty("报销单号")
    private String payoutCode;

    /**
     *支出金额-元
     */
    @ApiModelProperty("支出金额")
    @JsonSerialize(using = BigDecimalSerializer.class)
    private BigDecimal payoutFee;

    /**
     *支出时间
     */
    @ApiModelProperty("支出时间")
    private LocalDateTime payoutDate;

    /**
     *经办人
     */
    @ApiModelProperty("经办人")
    private String operatePersonName;

    /**
     *报销人id
     */
    @ApiModelProperty("报销人id")
    private String payoutPersonId;

    /**
     *报销人名称
     */
    @ApiModelProperty("报销人名称")
    private String payoutPersonName;

    /**
     *摘要
     */
    @ApiModelProperty("摘要")
    private String note;

    /** 审核状态 */
    @ApiModelProperty("审核状态")
    private String checkstatus;

    /** 审核日期 */
    @ApiModelProperty("审核日期")
    private String checkdate;

    /** 审核人 */
    @ApiModelProperty("审核人")
    private String checker;

    /**
     *科研项目编号
     */
    @ApiModelProperty("项目编号")
    private String projectCode;

    /**
     *财务项目编号
     */
    @ApiModelProperty("财务项目编号")
    private String feeCode;

    /**
     *支出科目编号
     */
    @ApiModelProperty("支出科目编号")
    private String payoutSubjectCode;

    /**
     *预算科目编号
     */
    @ApiModelProperty("预算科目编号")
    private String budgetSubjectCode;

    /**
     *凭证内码
     */
    @ApiModelProperty("凭证内码")
    private String cwPznm;

    /**
     *笔号
     */
    @ApiModelProperty("笔号")
    private Integer cwBh;

    /**
     *凭证号
     */
    @ApiModelProperty("凭证号")
    private String cwVouNum;

    /**
     *支出科目
     */
    @ApiModelProperty("支出科目")
    private String payoutSubjectName;

    /**
     *预算科目
     */
    @ApiModelProperty("预算科目")
    private String budgetSubjectName;

    /**
     *经费卡号
     */
    @ApiModelProperty("经费卡号")
    private String feeCardNo;

    @ApiModelProperty("流程实例id")
    private String processInstanceId;

    /**
     * 项目名称
     */
    @ApiModelProperty("项目名称")
    @TableField(exist = false)
    private  String projectName;

    /**
     * 负责人
     */
    @ApiModelProperty("负责人")
    @TableField(exist = false)
    private String ChargerName;

    /**
     * 所属单位
     */
    @ApiModelProperty("所属单位")
    @TableField(exist = false)
    private String unitId;


    /**
     * 项目分类
     */
    @ApiModelProperty("项目分类")
    @TableField(exist = false)
    private String projectType;

    /**
     * 项目性质
     */
    @ApiModelProperty("项目性质")
    @TableField(exist = false)
    private String projectClass;
}
